package cn.edu.bzu.ie.sf.mealsmisweb.service.impl;

import cn.edu.bzu.ie.sf.mealsmisweb.entity.Userinfo;
import cn.edu.bzu.ie.sf.mealsmisweb.mapper.UserinfoMapper;
import cn.edu.bzu.ie.sf.mealsmisweb.service.UserinfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @version v1.0.0
 * @Package : cn.edu.bzu.ie.sf.mealsmisweb.service.impl
 * @Description : TODO
 * @Create on : 2021/8/7 21:26
 * @author: Feng Song 宋锋
 **/
@Repository
@Service
public class UserinfoServiceImpl implements UserinfoService {
    @Autowired
    private UserinfoMapper userinfoMapper;    // 用户数据库操作接口实例

    /**
     * 获取所有的用户信息，用于支队管理员管理所有的用户信息
     * @return 所有的用户信息列表
     */
    public List<Userinfo> getAllUserList(){
        //return userinfoMapper.selectAll();
        return userinfoMapper.getAllUserList();
    }

    /**
     * 获取某个大队下的所有的用户信息，用于大队管理员管理所有的用户信息
     * @param depid 大队id
     * @return 大队中的用户信息列表
     */
    public List<Userinfo> getAllUserListByDepid(int depid){
//        Example example = new Example(Userinfo.class);
//        Example.Criteria criteria = example.createCriteria();
//        criteria.andEqualTo("depid", depid);
//        return userinfoMapper.selectByExample(example);
        return userinfoMapper.getAllUserListByDepid(depid);
    }

    /**
     * 获取某个用户信息，用于密码的编辑，但是在android中可以直接从adapter中传值到修改界面
     * @param id 用户的id
     * @return Userinfo用户信息实例
     */
    public Userinfo getUserinfoById(int id){
//        Userinfo userSel = new Userinfo();
//        userSel.setId(id);
//        return userinfoMapper.selectByPrimaryKey(userSel);
        return userinfoMapper.getUserinfoById(id);
    }

    /**
     * 根据用户名和用户密码检查用户信息，用于用户登录
     * @param uname 用户名
     * @param upass 用户密码
     * @return Userinfo 实例
     */
    public Userinfo getUserinfoByUnameAndUpass(String uname, String upass){
//        Example example = new Example(Userinfo.class);
//        Example.Criteria criteria = example.createCriteria();
//        criteria.andEqualTo("uname", uname);
//        criteria.andEqualTo("upass", upass);
//        Userinfo item = null;
//        item = userinfoMapper.selectOneByExample(example);
//        return item;
        return userinfoMapper.getUserinfoByUnameAndUpass(uname, upass);
    }

    /**
     * 通过用户名、电话、邮箱查询用户信息
     * @param uname 用户名
     * @param phone 密保手机号
     * @param email 密保邮箱
     * @return Userinfo 实例
     */
    public Userinfo getUserinfoByUnamePhoneEmail(String uname, String phone, String email){
        return userinfoMapper.getUserinfoByUnamePhoneEmail(uname, phone, email);
    }

    /**
     * 检查用户名的数量，用于检查用户名是否已经被使用了
     * @param uname 用户名
     * @return int 数量，0未被使用，>0已经使用了
     */
    public int chkUnameExist(String uname){
        return userinfoMapper.chkUnameExist(uname);
    }


    /**
     * 添加用户信息
     * @param item 要添加的用户信息
     * @return int 影响的行数
     */
    public int addUserinfo(Userinfo item){
        //return userinfoMapper.insert(item);
        return userinfoMapper.addUserinfo(item);
    }

    /**
     * 修改用户信息
     * @param item 要修改的用户信息
     * @return int 影响的行数
     */
    public int editUserinfo(Userinfo item){
        //return userinfoMapper.updateByPrimaryKey(item);
        return userinfoMapper.editUserinfo(item);
    }

    /**
     * 删除用户信息
     * @param id 要删除用户的id
     * @return int 影响的行数
     */
    public int delUserinfo(int id){
//        Userinfo item = new Userinfo();
//        item.setId(id);
//        return userinfoMapper.delete(item);
        return userinfoMapper.delUserinfo(id);
    }
}
